"""
基于 CrewAI 的数据分析智能体
"""
from crewai import Task
from agents.base_agent import CrewAIStockAgent
from tools.stock_tools import DataAnalysisTool
from typing import List, Dict, Any, Optional
from colorama import Fore, Style


class DataAnalystAgent(CrewAIStockAgent):
    """基于 CrewAI 的数据分析智能体"""
    
    def __init__(self):
        # 创建分析工具
        tools = [
            DataAnalysisTool()
        ]
        super().__init__("data_analyst", tools)
        print(Fore.CYAN + f"    - [CrewAI] {self.config.name} 专注于数据分析任务")
    
    def create_tasks(self, stock_code: str, data_collection_task: Optional[Task] = None) -> List[Task]:
        """创建数据分析任务"""
        tasks = []
        
        # 任务1：技术分析
        technical_analysis_task = Task(
            description=f"""
            对股票 {stock_code} 进行深入的技术分析：
            1. 分析价格趋势和形态
            2. 计算移动平均线（MA）、相对强弱指数（RSI）等技术指标
            3. 识别支撑位和阻力位
            4. 评估成交量与价格的关系
            5. 预测短期价格走势
            
            基于收集到的历史数据，提供专业的技术分析报告。
            """,
            expected_output="""
            技术分析报告应包含：
            - 当前趋势判断（上升/下降/震荡）
            - 关键技术指标值和解读
            - 支撑位和阻力位
            - 成交量分析
            - 短期走势预测
            """,
            agent=self.agent,
            tools=self.tools,
            context=[data_collection_task] if data_collection_task else []
        )
        tasks.append(technical_analysis_task)
        
        # 任务2：基本面分析
        fundamental_analysis_task = Task(
            description=f"""
            对股票 {stock_code} 进行基本面分析：
            1. 评估公司财务状况
            2. 分析行业地位和竞争优势
            3. 评估管理层质量和公司治理
            4. 分析宏观经济因素影响
            5. 计算估值指标（P/E、P/B等）
            
            结合新闻资讯，提供全面的基本面分析。
            """,
            expected_output="""
            基本面分析报告应包含：
            - 财务健康状况评分
            - 行业地位分析
            - 成长潜力评估
            - 估值水平判断
            - 主要风险因素
            """,
            agent=self.agent,
            context=[data_collection_task] if data_collection_task else []
        )
        tasks.append(fundamental_analysis_task)
        
        # 任务3：风险评估
        risk_assessment_task = Task(
            description=f"""
            对股票 {stock_code} 进行全面的风险评估：
            1. 识别市场风险因素
            2. 评估公司特定风险
            3. 分析流动性风险
            4. 评估政策和监管风险
            5. 计算风险调整收益率
            
            提供风险等级评定和风险管理建议。
            """,
            expected_output="""
            风险评估报告应包含：
            - 风险等级（高/中/低）
            - 主要风险因素列表
            - 风险发生概率评估
            - 潜在损失评估
            - 风险缓解建议
            """,
            agent=self.agent,
            context=[technical_analysis_task, fundamental_analysis_task]
        )
        tasks.append(risk_assessment_task)
        
        # 任务4：综合分析报告
        comprehensive_analysis_task = Task(
            description=f"""
            生成股票 {stock_code} 的综合分析报告：
            1. 整合技术分析和基本面分析结果
            2. 综合评估投资价值
            3. 提供明确的评级（强烈推荐/推荐/中性/谨慎/回避）
            4. 制定投资时间表
            5. 提供具体的操作建议
            
            基于所有分析结果，生成专业、全面的投资分析报告。
            """,
            expected_output="""
            综合分析报告应包含：
            - 执行摘要
            - 投资评级和理由
            - 目标价格区间
            - 投资时间窗口
            - 关键观察指标
            - 风险提示
            """,
            agent=self.agent,
            context=[technical_analysis_task, fundamental_analysis_task, risk_assessment_task]
        )
        tasks.append(comprehensive_analysis_task)
        
        print(Fore.GREEN + f"    - [CrewAI] {self.config.name} 创建了 {len(tasks)} 个分析任务")
        return tasks
    
    def get_summary(self) -> str:
        """获取智能体摘要"""
        return f"""
        📈 数据分析智能体
        角色: {self.config.role}
        目标: {self.config.goal}
        分析维度: 技术分析、基本面分析、风险评估
        """
